1Writer ルーチン編集
code:js
// 1. リピートタスク.mdの内容を取得してリスト表示
let folderPath = editor.getFolderPath();
let repeatTaskFilePath = folderPath + '/リピートタスク.md';
var editingfile = editor.getFileName();
var cursorPosition = editor.getSelectedRange(); // カーソル位置を保存
let originalNoteContent = editor.getText(); // 現在編集中のノートの内容を保存
let originalSelectionRange = editor.getSelectedRange(); // 現在のカーソル位置を保存
// 選択範囲のテキストを取得
let selectedText = editor.getSelectedText();
// リピートタスク.mdを開いて内容を取得
editor.openFile(repeatTaskFilePath, 'edit', function() {
let content = editor.getText(); // リピートタスク.mdの内容を取得
let tasks = content.split('\n').filter(task => task.trim() !== '');
let filteredTasks = tasks;
// 選択範囲が存在する場合は、その範囲のテキストでタスクを検索
if (selectedText && selectedText.trim() !== '') {
filteredTasks = tasks.filter(task => task.includes(selectedText.trim()));
if (filteredTasks.length === 0) {
ui.hudError('選択されたテキストに一致するタスクが見つかりません');
return;
}
}
// タスクリストを表示するためのデータを準備
let listData = filteredTasks.map((task, index) => ${task}|${tasks.indexOf(task)});
// 2. 選択したタスクに対する処理を選択
ui.list('リピートタスク', listData, false, function(selectedValues, selectedIndices) {
if (!selectedValues) {
ui.hudError('タスクが選択されていません');
return;
}
let selectedTaskIndex = selectedIndices0;
let selectedTask = filteredTasksselectedTaskIndex;
let originalTaskIndex = tasks.indexOf(selectedTask); // 元のタスクリストでのインデックス
// 処理選択リストを表示
let actions = '編集', '移動', '削除';
ui.list('処理を選択してください', actions, false, function(actionValues, actionIndices) {
let action = actions[actionIndices0];
switch(action) {
case '編集':
// 3.1 編集:タスク内容を編集
ui.input('タスクを編集', selectedTask, '', 'text', function(editedTask) {
tasksoriginalTaskIndex = editedTask;
saveChangesToRepeatTaskFile(tasks);
ui.hudSuccess('タスクが編集されました');
});
break;
case '移動':
// 3.2 移動:タスクの移動
ui.list('移動先を選択してください', listData, false, function(moveValues, moveIndices) {
let moveIndex = moveIndices0;
// 選択したタスクを削除し、指定したタスクの直後に挿入
let movedTask = tasks.splice(originalTaskIndex, 1)0;
let insertIndex = (moveIndex >= originalTaskIndex) ? moveIndex : moveIndex + 1;
tasks.splice(insertIndex, 0, movedTask);
saveChangesToRepeatTaskFile(tasks);
ui.hudSuccess('タスクが移動されました');
});
break;
case '削除':
// 3.3 削除:確認ポップアップを表示し、タスクを削除
ui.alert('本当に削除しますか?', '確認', '削除', 'キャンセル', function(confirmIndex) {
if (confirmIndex === 0) {
tasks.splice(originalTaskIndex, 1);
saveChangesToRepeatTaskFile(tasks);
ui.hudSuccess('タスクが削除されました');
} else {
ui.hudDismiss();
}
});
break;
default:
ui.hudError('不明な操作です');
}
});
});
// リピートタスク.mdの編集内容を保存し、元のノートに戻る
function saveChangesToRepeatTaskFile(tasks) {
editor.setText(tasks.join('\n')); // リピートタスク.mdの内容を更新
editor.close(); // ファイルを閉じる
// 元のノートを再度開き、元のカーソル位置を復元
editor.openFile(folderPath + '/' + editingfile, 'edit', function() {
editor.setSelectedRange(cursorPosition0); // カーソル位置に戻る
});
}
});